#ifndef POWERSOURCEITEM_H
#define POWERSOURCEITEM_H

#include <QGraphicsItem>
#include <QPainter>
#include <QGraphicsProxyWidget>
#include <QLabel>
#include <QGraphicsScene>

class PowerSourceItem : public QObject, public QGraphicsItem {
    Q_OBJECT

public:
    PowerSourceItem() {
        setFlag(QGraphicsItem::ItemIsMovable);  // 允许拖动
        setFlag(ItemIsSelectable);  // 使得组件可以被选中

        // 创建QLabel并设置为“Power”的标签
        l = new QLabel("Power");
        l->setAlignment(Qt::AlignCenter);

        // 创建代理小部件
        proxyWidget = new QGraphicsProxyWidget();
        proxyWidget->setWidget(l);
        proxyWidget->setParentItem(this);  // 将标签与当前的QGraphicsItem绑定
    }

    QRectF boundingRect() const override {
        return QRectF(0, 0, 40, 40);  // 电源的大小
    }

    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override {
        // 设置抗锯齿
        painter->setRenderHint(QPainter::Antialiasing);

        // 设置填充颜色为灰色
        painter->setBrush(Qt::gray);

        // 圆的中心和半径
        QPoint center = boundingRect().center().toPoint();
        int radius = boundingRect().width() / 4; // 使用boundingRect的宽度来确定半径

        // 绘制一个灰色圆形
        painter->drawEllipse(center, radius, radius);

        // 更新标签的位置（标签显示在电源上方）
        if (proxyWidget) {
            // 设置标签的位置
            proxyWidget->setPos(boundingRect().center().x() - l->width() / 2, boundingRect().top() - l->height());
        }
    }
    // 设置标签文本
    void setLabel(const QString &label) {
        if (l) {
            l->setText(label);  // 更新标签文本
        }
    }
    // 获取标签文本
    QString getLabel() const {
        if (l) {
            return l->text();  // 返回QLabel中的文本内容
        }
        return QString();  // 如果标签为空，返回空字符串
    }
    void setrotation(qreal rotation)
    {
        this->setrotation(rotation);
    }
    void setX(qreal posX)
    {
        this->setX(posX);
    }
    void setY(qreal posY)
    {
        this->setX(posY);
    }
private:
    QLabel *l;  // 标签
    QGraphicsProxyWidget *proxyWidget;  // 用于显示标签的代理组件
};


#endif // POWERSOURCEITEM_H
